package redis.Test;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class reidsDemo {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost", 6379);
        jedis.set("xw", "shuaishile");
        jedis.close();
    }

    //字符串数据结构操作
    @Test
    public void test1() {
        //获取连接
        Jedis jedis = new Jedis("localhost", 6379);//如果使用空参结构，默认值是“localhost”,6379端口

        String name = jedis.get("name");
        /*可以使用setex()方法存储指定时间的key value
         * */
        //String setex = jedis.setex("key", 20, "wuhu");//20秒后自动删除

        String key = jedis.get("key");
        System.out.println(key);
        System.out.println(name);
        jedis.close();
    }

    //hash数据结构操作
    @Test
    public void test2() {
        //获取连接
        Jedis jedis = new Jedis("localhost", 6379);//如果使用空参结构，默认值是“localhost”,6379端口
        jedis.hset("user", "name", "lisi");
        jedis.hset("user", "age", "21");
        jedis.hset("user", "adress", "kaifeng");
        String hget = jedis.hget("user", "adress");
        System.out.println(hget);
        Map<String, String> user = jedis.hgetAll("user");
        Set<String> strings = user.keySet();
        for (String key : strings) {
            String s = user.get(key);
            System.out.println(key + ":" + s);
        }
        jedis.close();
    }

    //list数据结构操作
    @Test
    public void test3() {
        //获取连接
        Jedis jedis = new Jedis("localhost", 6379);//如果使用空参结构，默认值是“localhost”,6379端口
        jedis.lpush("list", "1", "2", "3", "4", "34");
        jedis.rpush("list", "1", "2", "3", "4", "34");
        List<String> list = jedis.lrange("list", 0, -1);
        System.out.println(list);
        String list1 = jedis.lpop("list");
        System.out.println(list1);
        String list2 = jedis.rpop("list");
        System.out.println(list2);
        List<String> li = jedis.lrange("list", 0, -1);
        System.out.println(li);
        jedis.close();
    }

    //set数据结构操作
    @Test
    public void test4() {
        //获取连接
        Jedis jedis = new Jedis("localhost", 6379);//如果使用空参结构，默认值是“localhost”,6379端口
        jedis.sadd("setzxw", "zs", "tsl", "sfl");
        Set<String> serzxw = jedis.smembers("serzxw");
        System.out.println(serzxw);
        jedis.close();
    }

    //sortset数据结构操作
    @Test
    public void test5() {
        //获取连接
        Jedis jedis = new Jedis("localhost", 6379);//如果使用空参结构，默认值是“localhost”,6379端口
        jedis.zadd("mysortset", 3, "亚瑟");
        jedis.zadd("mysortset", 30, "猴子");
        jedis.zadd("mysortset", 15, "孙策");
        Set<String> mysortset = jedis.zrange("mysortset", 0, -1);
        System.out.println(mysortset);

        jedis.close();
    }

    @Test
    public void test6() {
        //创建一个配置文件
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);//设置最大连接数为50
        config.setMaxIdle(10);//设置ideA最大活跃连接数
        JedisPool jedisPool = new JedisPool("localhost",6379);
        Jedis jedis = jedisPool.getResource();
        jedis.set("haha", "zhencai");
        jedis.close();
    }

    @Test
    public void test7() {
        Jedis jedis = jedisUtils.getJedis();
        jedis.set("zs","fwgt");
        jedis.close();
    }
}
